package dev.hitools.utils.kts

import android.app.Activity
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.fragment.app.Fragment
import androidx.viewbinding.ViewBinding
import dev.hitools.utils.base.utils.StringUtils
import dev.hitools.utils.base.utils.ToastUtils
import dev.hitools.utils.base.utils.router.AppRouter
import dev.hitools.utils.kts.binding.FragmentBinding


object FragmentExt {
    /**
     * Toast提示
     * @param message 内容
     * @param duration 时长
     */
    fun Fragment.toast(message: String, duration: Int = Toast.LENGTH_SHORT) {
        ToastUtils.show(context, message, duration)
    }

    /**
     * Toast提示
     * @param message 内容
     * @param duration 时长
     */
    fun Fragment.toast(@StringRes message: Int, duration: Int = Toast.LENGTH_SHORT) {
        ToastUtils.show(context, message, duration)
    }

    /**
     * Toast提示
     * @param message 内容
     */
    fun Fragment.toastLong(message: String) {
        ToastUtils.show(context, message, Toast.LENGTH_LONG)
    }

    /**
     * Toast提示
     * @param message 内容
     */
    fun Fragment.toastLong(@StringRes message: Int) {
        ToastUtils.show(context, message, Toast.LENGTH_LONG)
    }


    /**
     * 打开一个Class
     */
    fun Fragment.open(cls: Class<*>, finishSelf: Boolean = false) {
        val router = AppRouter.with(context)
            .target(cls)
        if (finishSelf) {
            router.finishSelf()
        }
        router.start()
    }


    /**
     * 方便获取ViewBinding
     */
    inline fun <reified T : ViewBinding> Fragment.binding() = FragmentBinding(T::class.java, this)
}